chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (request.action === "extract") {
    // 获取标题
    const title = document.querySelector('#activity-name')?.innerText.trim() || document.title;
    
    // 获取报告时间
    let reportTime = '';
    const timeElement = document.querySelector('#publish_time') || // 微信文章时间
                       document.querySelector('#post-date') ||     // 一般博客时间
                       document.querySelector('.post-time');       // 其他可能的时间选择器
    
    if (timeElement) {
      reportTime = timeElement.innerText.trim()
        .split(' ')[0]  // 只取空格前的日期部分
        .replace(/\s+/g, ' ');
    }
    
    // 如果没有找到时间，使用当前时间并格式化
    if (!reportTime) {
      const now = new Date();
      reportTime = `${now.getFullYear()}年 ${String(now.getMonth() + 1).padStart(2, '0')}月 ${String(now.getDate()).padStart(2, '0')}日`;
    } else {
      // 如果找到了时间，确保格式统一
      // 处理可能的各种时间格式
      const dateStr = reportTime
        .replace(/[\u4e00-\u9fa5]/g, '') // 移除所有中文字符
        .trim()
        .split(/[\s:]+/)[0]  // 只保留日期部分，移除时间
        .replace(/[-\/]/g, '-'); // 统一分隔符
      
      try {
        const date = new Date(dateStr);
        if (!isNaN(date.getTime())) {
          reportTime = `${date.getFullYear()}年 ${String(date.getMonth() + 1).padStart(2, '0')}月 ${String(date.getDate()).padStart(2, '0')}日`;
        }
      } catch (e) {
        // 如果解析失败，使用当前时间
        const now = new Date();
        reportTime = `${now.getFullYear()}年 ${String(now.getMonth() + 1).padStart(2, '0')}月 ${String(now.getDate()).padStart(2, '0')}日`;
      }
    }

    // 优化内容提取逻辑
    let content = '';
    let fullContent = '';
    
    // 微信文章特定选择器
    const wechatSelectors = [
      '#js_content',  // 微信文章主体内容
      '.rich_media_content',  // 富媒体内容
      '#activity-detail'  // 文章详情区域
    ];

    // 先尝试微信特定选择器
    for (const selector of wechatSelectors) {
      const element = document.querySelector(selector);
      if (element) {
        // 获取所有文本节点
        const paragraphs = Array.from(element.querySelectorAll('*'))
          .filter(el => {
            const text = el.innerText.trim();
            // 过滤掉短文本和特定内容
            return text.length > 30 && 
                   !text.includes('cover_image') && 
                   !text.includes('阅读原文') &&
                   !text.includes('往期推荐') &&
                   !text.includes('点击') &&
                   !text.includes('扫一扫') &&
                   !text.includes('关注该公众号') &&
                   !text.includes('长按识别') &&
                   !text.includes('二维码');
          })
          .map(el => el.innerText.trim())
          .filter((text, index, self) => 
            // 去重
            self.indexOf(text) === index
          );

        // 获取第一段实际内容
        if (paragraphs.length > 0) {
          fullContent = paragraphs[0];
          break;
        }
      }
    }

    // 如果没有找到内容，使用通用选择器
    if (!fullContent) {
      const generalSelectors = [
        'article',
        'main',
        'section',
        '.content',
        '.article-content',
        '#content',
        '.post-content'
      ];

      for (const selector of generalSelectors) {
        const element = document.querySelector(selector);
        if (element) {
          // 使用相同的提取逻辑
          const paragraphs = Array.from(element.querySelectorAll('*'))
            .filter(el => {
              const text = el.innerText.trim();
              return text.length > 30 && 
                     !text.includes('cover_image') && 
                     !text.includes('阅读原文') &&
                     !text.includes('往期推荐') &&
                     !text.includes('点击') &&
                     !text.includes('扫一扫') &&
                     !text.includes('关注该公众号') &&
                     !text.includes('长按识别') &&
                     !text.includes('二维码');
            })
            .map(el => el.innerText.trim())
            .filter((text, index, self) => self.indexOf(text) === index);

          if (paragraphs.length > 0) {
            fullContent = paragraphs[0];
            break;
          }
        }
      }
    }

    // 清理内容
    fullContent = fullContent
      .replace(/\s+/g, ' ')  // 替换多个空白字符为单个空格
      .replace(/[\n\r]+/g, '\n')  // 规范化换行符
      .trim();

    // 生成摘要
    content = fullContent;
    if (fullContent.length > 100) {
      // 分句
      const sentences = fullContent.split(/[。！？.!?]+/)
        .filter(s => s.trim().length > 0)
        .map(s => s.trim());
      
      // 如果只有一个长句子，尝试在合适的位置截断
      if (sentences.length <= 1) {
        // 在标点符号处截断
        const punctuations = ['，', '；', '：', ',', ';', ':'];
        let bestBreakPoint = -1;
        
        for (const punct of punctuations) {
          const lastIndex = fullContent.lastIndexOf(punct, 100);
          if (lastIndex > bestBreakPoint) {
            bestBreakPoint = lastIndex;
          }
        }
        
        if (bestBreakPoint > 30) { // 确保有足够的内容
          content = fullContent.substring(0, bestBreakPoint + 1) + '。';
        } else {
          // 如果找不到合适的断点，尝试在词语边界截断
          const words = fullContent.substring(0, 100).match(/[\u4e00-\u9fa5]+/g);
          if (words && words.length > 0) {
            content = words.join('') + '。';
          }
        }
      } else {
        // 选择重要句子组成摘要
        let summary = '';
        let totalLength = 0;
        
        // 提取关键句子
        for (let i = 0; i < sentences.length && totalLength < 100; i++) {
          const sentence = sentences[i];
          if (sentence) {
            if (summary) {
              if (totalLength + sentence.length + 1 <= 100) {
                summary += '。' + sentence;
                totalLength += sentence.length + 1;
              } else {
                break;
              }
            } else {
              summary = sentence;
              totalLength = sentence.length;
            }
          }
        }
        
        // 确保摘要以句号结尾
        content = summary + (summary.endsWith('。') ? '' : '。');
      }
      
      // 如果生成的摘要太短，使用原文
      if (content.length < 30) {
        content = fullContent;
      }
    }

    sendResponse({
      title: title,
      content: content || fullContent || '未能提取到有效内容',
      reportTime: reportTime || new Date().toLocaleDateString()
    });
    return true; // 保持消息通道开启
  }
}); 